Only BP set running_on_xen.
xensetup.S slightly compacted.
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
;;
(isBP) st8 [r2]=r28 // save the address of the boot param area passed by the bootloader
+#ifdef CONFIG_XEN
+ // Note: isBP is used by the subprogram.
+ br.call.sptk.many rp=early_xen_setup
+ ;;
+#endif
+
#ifdef CONFIG_SMP
(isAP) br.call.sptk.many rp=start_secondary
.ret0:
// This is executed by the bootstrap processor (bsp) only:
-#ifdef CONFIG_XEN
- br.call.sptk.many rp=early_xen_setup
- ;;
-#endif
#ifdef CONFIG_IA64_FW_EMU
// initialize PAL & SAL emulator:
br.call.sptk.many rp=sys_fw_init
running_on_xen:
data4 0
+#define isBP p3 // are we the Bootstrap Processor?
+
.text
GLOBAL_ENTRY(early_xen_setup)
- mov r8=cr.dcr;;
- extr.u r8=r8,63,1
- movl r9=running_on_xen;;
- st4 [r9]=r8;;
+ mov r8=cr.dcr
+(isBP) movl r9=running_on_xen;;
+ extr.u r8=r8,63,1;;
cmp.ne p7,p0=r8,r0;;
+(isBP) st4 [r9]=r8
(p7) movl r10=xen_ivt;;
(p7) mov cr.iva=r10
br.ret.sptk.many rp;;
GLOBAL_ENTRY(is_running_on_xen)
movl r9=running_on_xen;;
- ld4 r8=[r9];;
+ ld4 r8=[r9]
br.ret.sptk.many rp;;
END(is_running_on_xen)